package com.wholesmart.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.wholesmart.mapper.entity.Code;

/**
 * 数据字典持久层接口
 * 
 * @author dyw
 *
 */
public interface CodeMapper {
	/**
	 * 分页条件查询(查询数量)
	 * 
	 * @param page      分页条件
	 * @param condition 查询条件（name，status，level）
	 * @return 字典实体列表
	 */
	List<Code> selectPage(@Param("page") Object page, @Param("condition") Object condition);

	/**
	 * 分页条件查询(统计数量)
	 * 
	 * @param condition 查询条件（name，status，level）
	 * @return 数量
	 */
	long countForSelectPage(@Param("condition") Object condition);

	/**
	 * 插入一条数据
	 * 
	 * @param entity 字典实体
	 * @return
	 */
	int insert(Code entity);

	/**
	 * 更新数据
	 * 
	 * @param entity 字典实体
	 * @return
	 */
	int updateById(Code entity);

	/**
	 * 删除一条数据
	 * 
	 * @param id
	 */
	void deleteById(Long id);

	/**
	 * 通过顶级字典编号获取字典树
	 * 
	 * @param topCode 顶级字典编号
	 * @return 每个Map中包含字典编号及其对应的名称
	 */
	List<Map<String, String>> selectCodeTree(String topCode);

	/**
	 * 根据顶级字典编号查询下级所有子集字典
	 * 
	 * @param topCode 顶级字典编号
	 * @return 字典实体列表
	 */
	List<Code> selectSubCodesByPCode(String topCode);

	/**
	 * 根据数据字典ID更新数据字典名
	 * 
	 * @param id   数据字典ID
	 * @param name 数据字典名
	 */
	void updateNameById(@Param("id") Long id, @Param("name") String name);

	/**
	 * 根据数据字典ID更新数据字典状态
	 * 
	 * @param id     数据字典ID
	 * @param status 数据字典状态
	 */
	void updateStatusById(@Param("id") Long id, @Param("status") String status);
}
